package AtomicDemo.AtomicArrayDemo;

import java.util.concurrent.atomic.AtomicIntegerArray;

/**
 * @Author: ylc
 * @Description:原子数组
 * @Date Created in 2022-05-14 15:39
 */
public class AtomicIntegerArrayDemo {
    public static void main(String[] args) {
        //1.创建一个指定长度的数组
        AtomicIntegerArray atomicIntegerArray = new AtomicIntegerArray(10);
        System.out.println(atomicIntegerArray);
        //2.返回指定位置的元素
        System.out.println("返回指定下标的元素"+atomicIntegerArray.get(2));
        //3.设置指定位置的元素
        atomicIntegerArray.set(0,10);
        //4.在设置数组元素的新值时，同时返回数组元素。
        System.out.println("返回1下标原来的元素并设置一个元素"+atomicIntegerArray.getAndSet(1,11));
        System.out.println(atomicIntegerArray);
        System.out.println("设置之后的元素"+atomicIntegerArray.get(1));
        //5.修改数组元素把数组加上某个值
        System.out.println("先加20，再返回："+atomicIntegerArray.addAndGet(0,20));
        System.out.println("先返回再加"+atomicIntegerArray.getAndAdd(1,20));
        System.out.println(atomicIntegerArray);
        //6.CAS操作
        System.out.println("如果0下标元素是30--->"+atomicIntegerArray.compareAndSet(0,30,222)+"-->就设置为222");
        System.out.println(atomicIntegerArray);
        //7.自增、自减
        System.out.println(atomicIntegerArray.incrementAndGet(3)); //先自增
        System.out.println(atomicIntegerArray.getAndIncrement(3)); //先使用再自增
        System.out.println(atomicIntegerArray.get(3));
        System.out.println(atomicIntegerArray.getAndDecrement(3));
        System.out.println(atomicIntegerArray.get(3));

    }
}
